qx.Class.define("caraffa.widgets.ABMMaestros",
{
	statics : 
	{
		getABMPacientes : function ()
		{
			var json = 
			{
				masterTable : "pacientes",
				rpcDataGrid : "getListaPacientes",
				
				remoteData : true,
				remoteLength : 4,
				
				key : "dni_paciente",
				tableWidth: 1000,
				tableHeight:300,
				cod_paciente :
				{
					tableView : {label :"cod_paciente", visible:false, width:60}
				},				
				dni_paciente :
				{
					tableView : {label :"DNI"},
					object : new qx.ui.form.ow.TextField("DNI:", "", true)
				},
				apellido :
				{
					tableView : {label : "Apellido y Nombres", width: 230},
					object : new qx.ui.form.ow.TextField("Apellido:", "", true)
				},
				nombres :
				{
					object : new qx.ui.form.ow.TextField("Nombres:", "", true)
				},
				fecha_nacimiento :
				{
					tableView : {label : "Edad", width: 70},
					object : new qx.ui.form.ow.DateText("Fec. Nacimiento:")
				},	
				domicilio :
				{
					object : new qx.ui.form.ow.TextField("Domicilio:", "", true)
				},
				telefono1 :
				{
					tableView : {label : "Tel. 1", width: 120},
					object : new qx.ui.form.ow.TextField("Teléfono 1:")
				},	
				telefono2 :
				{
					tableView : {label : "Tel. 2", width: 120},
					object : new qx.ui.form.ow.TextField("Teléfono 2:")
				},
				cod_plan1 :
				{
					object : new qx.ui.form.ow.ComboFilter("Plan OS. Prim:", ""),
					values : 
					{
						rpc : "getPlanes",
						nullValue : true
					}
				},
				nro_afiliado1 :
				{
					object : new qx.ui.form.ow.TextField("Afiliado N°:", "", true)
				},				
				cod_plan2 :
				{
					object : new qx.ui.form.ow.ComboFilter("Plan OS. Sec:", ""),
					values : 
					{
						rpc : "getPlanes",
						nullValue : true
					}
				},
				nro_afiliado2 :
				{
					object : new qx.ui.form.ow.TextField("Afiliado N°:", "", true)
				},
				nro_historia_clinica :
				{
					tableView : {label : "N° Hist. Clínica", width: 120},
					object : new qx.ui.form.ow.TextField("N° Historia Clínica:")
				},
				origen : {
					tableView : {label : "Origen", width: 70},
					object : new qx.ui.form.ow.ComboBox("Origen:", [{value:"P", label:"Personal"}, {value:"C", label:"Caraffa"}, {value:"O", label:"Policlinico"}], true)
				},
				dni_usuario : {
					tableView : {label : "Pertenece a", width: 120},
					object : new qx.ui.form.ow.ComboBox("Pertenece a:", ""),
					values : 
					{
						rpc : "getMedicos",
						nullValue : true
					}
				},
				nro_historia_clinica_siguiente :
				{
					object : new qx.ui.form.ow.ComboBox("Siguiente Nro :", "").set({enabled:false}),
					values : 
					{
						rpc : "getNroHistoriaClinica",
						nullValue : true
					}
				}				
			};
			var ABMPacientes = new qx.ui.form.ow.ABM(json, "ABMPacientes", "ABM de Pacientes", true);
//			ABMPacientes.setAsync(true);
			ABMPacientes._grpInterface.addListener("appear", function () 
			{
				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"ABMPacientes"});
		        try
		        {
					var result = rpc.callSync(json["nro_historia_clinica_siguiente"].values.rpc);
					ABMPacientes._w["nro_historia_clinica_siguiente"].setNewValues(result.values, false);
				}
				catch (ex)
				{
					alert(ex);
				} 
			});
			return ABMPacientes;
		},
// ABMS USUARIOS ***********************************************
		getABMTiposUsuarios : function ()
		{
			var json = 
			{
				masterTable : "tipos_usuarios",
				rpcDataGrid : "getLista",
				key : "cod_tipo_usuario",
				tableWidth : 300,
				tableHeight : 200,
				cod_tipo_usuario :
				{
					tableView : {label :"Código", visible: false, width:60}
				},
				tipo :
				{
					tableView : {label : "Grupo", width: 220},
					object : new qx.ui.form.ow.TextField("Grupo:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMTiposUsuarios");
		},
		//TODO Z FUTURO: ABMUsuarios, la secretaria puede crear usuarios pero no asignar el grupo al que pertenece.
		getABMUsuarios : function ()
		{
			var json = 
			{
				masterTable : "usuarios",
				rpcDataGrid : "getLista",
				key : "dni_usuario",
				tableWidth: 950,
				tableHeight: 300,
				dni_usuario :
				{
					tableView : {label :"DNI", width: 100},
					object : new qx.ui.form.ow.TextField("DNI:", "", true)
				},
				apellido :
				{
					tableView : {label : "Nombre", width: 200},
					object : new qx.ui.form.ow.TextField("Apellido:", "", true)
				},
				nombres :
				{
					object : new qx.ui.form.ow.TextField("Nombres:", "", true)
				},
				usuario :
				{
					tableView : {label : "Usuario", width : 100},
					object : new qx.ui.form.ow.TextField("Usuario:", "", true)
				},
				password :
				{
					object : new qx.ui.form.ow.PassField("Contraseña:", "", true)
				},
				email :
				{
					tableView : {label : "Email", width : 180},
					object : new qx.ui.form.ow.TextField("Email:", "", true)
				},
				celular :
				{
					tableView : {label : "Celular", width : 120},
					object : new qx.ui.form.ow.TextField("Celular:", "", true)
				},
				telefono :
				{
					tableView : {label : "Teléfono", width : 120},
					object : new qx.ui.form.ow.TextField("Teléfono:", "", true)
				},
				cod_tipo_usuario :
				{
					tableView : {label : "Tipo", width : 120},
					object : new qx.ui.form.ow.ComboBox("Tipo:", ""),
					values : {
						rpc : "getTipoUsuarios"
					}
				}				
			};
			return new qx.ui.form.ow.ABM(json, "ABMUsuarios");
		},		
// ABMS CAJA *****************************************************
		getABMCajaRubros : function ()
		{
			var json = 
			{
				masterTable : "caja_rubros",
				rpcDataGrid : "getLista",
				key : "cod_caja_rubro",
				tableWidth : 150,
				tableHeight : 200,
				cod_caja_rubro :
				{
					tableView : {label :"Código", visible:false, width:60}
				},
				descripcion :
				{
					tableView : {label : "Rubro", width: 220},
					object : new qx.ui.form.ow.TextField("Rubro:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMCajaRubros");
		},		
// ABMS INVENTARIO ***********************************************
		getABMMarcas : function ()
		{
			var json = 
			{
				masterTable : "marcas",
				rpcDataGrid : "getLista",
				key : "cod_marca",
				tableWidth : 300,
				tableHeight : 200,
				cod_marca :
				{
					tableView : {label :"Código", visible:false, width:60}
				},
				descripcion :
				{
					tableView : {label : "Marca", width: 220},
					object : new qx.ui.form.ow.TextField("Marca:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMMarcas");
		},
		getABMRubros : function ()
		{
			var json = 
			{
				masterTable : "rubros",
				rpcDataGrid : "getLista",
				key : "cod_rubro",
				tableWidth : 300,
				tableHeight : 200,
				cod_rubro :
				{
					tableView : {label :"Código", visible:false, width:60}
				},
				descripcion :
				{
					tableView : {label : "Rubro", width: 220},
					object : new qx.ui.form.ow.TextField("Rubro:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMRubros");
		},
		getABMArticulos : function ()
		{
			var json = 
			{
				masterTable : "articulos",
				rpcDataGrid : "getLista",
				key : "cod_articulo",
				tableWidth : 960,
				tableHeight : 300,
				cod_articulo :
				{
					tableView : {label : "Código", visible:false, width:60}
				},
				cod_rubro :
				{
					tableView : {label : "Rubro", width : 120},
					object : new qx.ui.form.ow.ComboBox("Rubro:", ""),
					values : {
						rpc : "getRubros"
					}
				},
				descripcion :
				{
					tableView : {label : "Articulo", width: 350},
					object : new qx.ui.form.ow.TextField("Artículo:", "", true)
				},
				cod_marca :
				{
					tableView : {label : "Marca", width : 150},
					object : new qx.ui.form.ow.ComboBox("Marca:", ""),
					values : {
						rpc : "getMarcas"
					}
				},				
				cantidad_min :
				{
					tableView : {label : "Cant. Mínima", width : 120},
					object : new qx.ui.form.ow.TextField("Cantidad Mínima:", "", true)
				},
				cantidad_max :
				{
					tableView : {label : "Cant. Máxima", width : 120},
					object : new qx.ui.form.ow.TextField("Cantidad Máxima:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMArticulos");
		},
		getABMProveedores : function ()
		{
			var json = 
			{
				masterTable : "proveedores",
				rpcDataGrid : "getLista",
				key : "cod_razon_social",
				tableWidth : 960,
				tableHeight : 300,
				cod_razon_social :
				{
					tableView : {label :"Código", visible:false}
				},
				cuit :
				{
					tableView : {label : "CUIT", width: 120},
					object : new qx.ui.form.ow.TextField("CUIT:", "", true)
				},				
				descripcion :
				{
					tableView : {label : "Razón Social", width: 300},
					object : new qx.ui.form.ow.TextField("Razón Social:", "", true)
				},
				telefono1 :
				{
					tableView : {label : "Teléfono 1", width: 120},
					object : new qx.ui.form.ow.TextField("Teléfono N°1:", "", true)
				},		
				telefono2 :
				{
					tableView : {label : "Teléfono 2", width: 120},
					object : new qx.ui.form.ow.TextField("Teléfono N°2:", "", true)
				},
				email :
				{
					tableView : {label : "email", width: 220},
					object : new qx.ui.form.ow.TextField("email:", "", true)
				},				
				persona :
				{
					tableView : {label : "P. Tipo", width: 80, visible:false},
					object : new qx.ui.form.ow.ComboBox("Persona Tipo:", ""),
						values : 
						{
							items : [{value: "F", label: "Física"},{value: "J", label: "Júridica"}],
							nullValue : true
						}
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMProveedores");
		},
		getABMPartidas : function ()
		{
			var json = 
			{
				masterTable : "partidas",
				rpcDataGrid : "getLista",
				key : "cod_partida",
				tableWidth : 960,
				tableHeight : 400,
				cod_partida :
				{
					tableView : {label :"Código", visible:false}
				},
				fecha_compra :
				{
					tableView : {label : "Fec. Compra", width: 90},
					object : new qx.ui.form.ow.DateText("Fec. Compra:", "", true)
				},				
				rubro :
				{
					tableView : {label : "Rubro", width : 100}
				},
				cod_articulo :
				{
					tableView : {label : "Articulo", width : 300},
					object : new qx.ui.form.ow.ComboBox("Articulo:", ""),
					values : {
						rpc : "getArticulos"
					}
				},
				marca :
				{
					tableView : {label : "Marca", width : 100}
				},				
				vencimiento :
				{
					tableView : {label : "Vencimiento", width: 90},
					object : new qx.ui.form.ow.DateText("Fec.Venc:", "", true)
				},				
				cod_razon_social :
				{
					tableView : {label : "Proveedor", width : 150, visible:false},
					object : new qx.ui.form.ow.ComboBox("Proveedor:", ""),
					values : {
						rpc : "getProveedores"
					}
				},				
				cantidad_inicial :
				{
					tableView : {label : "Cant.In.", width: 80},
					object : new qx.ui.form.ow.TextField("Cantidad.:", "", true)
				},
				cantidad_disponible :
				{
					tableView : {label : "Cant.Disp.", width: 80}
				},
				importe :
				{
					tableView : {label : "Importe", width: 80},
					object : new qx.ui.form.ow.TextField("Importe:", "", true)
				},
				nro_factura :
				{
					tableView : {label : "Nro. Factura", width: 240, visible:false},
					object : new qx.ui.form.ow.TextField("Nro. de Factura:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMPartidas");
		},
// ABMS PRESTACIONES ***********************************************
		getABMPrestaciones : function ()
		{
			var json = 
			{
				masterTable : "prestaciones",
				rpcDataGrid : "getLista",
				key : "cod_prestacion",
				tableWidth: 800,
				tableHeight: 300,
				cod_prestacion :
				{
					tableView : {label :"Código", width:70, visible: false}
				},
				cod_prestacion_rubro :
				{
					object : new qx.ui.form.ow.ComboBox("Rubro:", ""),
					values : {
						rpc : "getPrestacionesRubros"
					}
				},						
				descripcion :
				{
					tableView : {label : "Descripción", width: 750},
					object : new qx.ui.form.ow.TextField("Descripción:", "", true)
				}				
			};
			return new qx.ui.form.ow.ABM(json, "ABMPrestaciones");
		},
		getABMPrestacionesRubros : function ()
		{
			var json = 
			{
				masterTable : "prestaciones_rubros",
				rpcDataGrid : "getLista",
				key : "cod_prestacion_rubro",
				tableWidth: 470,
				tableHeight: 300,
				cod_prestacion_rubro :
				{
					tableView : {label :"Código", width:70, visible:false}
				},
				descripcion :
				{
					tableView : {label : "Descripción", width: 300},
					object : new qx.ui.form.ow.TextField("Descripción:", "", true)
				}
			};
			return new qx.ui.form.ow.ABM(json, "ABMPrestacionesRubros");
		},		
		getABMPlanes : function ()
		{
			var json = 
			{
				masterTable : "planes",
				rpcDataGrid : "getLista",
				key : "cod_plan",
				tableWidth : 1000,
				tableHeight : 300,
				cod_plan :
				{
					tableView : {label :"Código", visible: false, width:60}
				},
				cod_obra_social :
				{
					tableView : {label : "Obra Social", width : 150},
					object : new qx.ui.form.ow.ComboBox("Obra Social:", ""),
					values : {
						rpc : "getObrasSociales"
					}
				},
				descripcion :
				{
					tableView : {label : "Plan", width: 150},
					object : new qx.ui.form.ow.TextField("Plan:", "", true)
				},
				detalles :
				{
					tableView : {label : "Detalles", width: 600},
					object : new qx.ui.form.ow.TextArea("Detalles:", "", true)
				}					
		};
			return new qx.ui.form.ow.ABM(json, "ABMPlanes");
		}
	}
});
